package main

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"
	"time"

	mobilebi "bserver/internal/mobile"
	telecombi "bserver/internal/telecom"
)

// TelecomSCInstance 电信实例
func TelecomSCInstance() {
	// 创建一个新的Telecom实例
	telecom := telecombi.NewTelecom()

	// 设置回调函数
	telecom.CtrlHandleFunc(func(id int, t string, req any, resp any) {
		// 处理请求
		// *resp, *err = telecom.Login(req)
	})

	// 启动服务
	telecom.Start()

	// 等待一段时间
	for {
		// fmt.Println("Running...")
		time.Sleep(time.Second * 1)
	}
	// time.Sleep(time.Second * 10)

	telecom.Stop()
}

// MobileSCInstance 创建一个新的Mobile实例，设置回调函数，启动服务，并等待一段时间
func MobileSCInstance() {
	// 创建信号通道
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
	// 创建一个新的Mobile实例
	mobile := mobilebi.NewMobile()

	// 设置回调函数
	mobile.CtrlHandleFunc(func(id int, t string, req any, resp any) {
		// 处理请求
		// *resp, *err = mobile.Login(req)
	})

	// 启动服务
	mobile.Start()

	fmt.Println("Running...")

	go func() {
		<-sigChan // 阻塞直到收到信号
		fmt.Println("\n收到中断信号，释放资源...")
		mobile.Stop() // 释放资源
		os.Exit(0)    // 退出程序
	}()

	fmt.Println("程序运行中，按 Ctrl+C 退出...")
	select {} // 阻塞主
}

func main() {
	fmt.Println("Hello World!")
	// TelecomSCInstance()
	MobileSCInstance()
}
